package Ptolemaiosz;

/**
 *
 * @author Mattias
 */

public class SkeletonLogger {

    private static boolean enabled = true;
    private static String history = "";
    private static int indent = 0;
    private static boolean emptyLine = false;
    
   public static int getIndent()
        {
            return indent;
        }
   
   public static void addToHistory(String s)
        {
            history += s;
        }
    
    public static boolean getEnabled()
        {
            return enabled;
        }
    public static void setEmptylines(boolean b)
        {
            emptyLine = b;
        }
    
    public static void enable()
        {
            enabled = true;
        }
            
    public static void disable()
        {
            enabled = false;
        }
    
    public static void logRef(String s)
        {
            //Megcsináljuk a behúzásokat, életvonalakat
            for(int i = 0;i<indent+1;i++) 
                history += "\t|";
            
            history += "-------------------------------------------- \r\n";
            
            //Megcsináljuk a behúzásokat, életvonalakat
            for(int i = 0;i<indent+1;i++) 
                history += "\t|";
            
            //Kirjuk a refet
            history += " REF:" + s + "\r\n";
            
            //Megcsináljuk a behúzásokat, életvonalakat
            for(int i = 0;i<indent+1;i++) 
                history += "\t|";
            
            history += "-------------------------------------------- \r\n";  
            
            if(emptyLine)
                    {
                            //Hívás utáni üres sor életvonalakkal
                            for(int i = 0;i<indent+1;i++) 
                                history += "\t|";

                            history += "\r\n";
                    }
        }
    
    public static void display()
        {
            
            System.out.print(history);
            history = "";
        }
    
    public static void logCall()
        {
            
            if(enabled) //Ha a logger engedélyezve van
                {
                    //Növeljük  eggyel a behúzás szintjét
                    indent++; 
                
                    //Megcsináljuk a behúzásokat, életvonalakat
                    for(int i = 0;i<indent;i++) 
                        history += "\t|";

                    //Loggoljuk a hívást
                    history += " => ";
                    history += Thread.currentThread().getStackTrace()[2].getClassName() + " :: " + Thread.currentThread().getStackTrace()[2].getMethodName();
                    
                    history += "\r\n";
                    
                    if(emptyLine)
                    {

                            //Hívás utáni üres sor életvonalakkal
                            for(int i = 0;i<indent+1;i++) 
                                history += "\t|";

                            history += "\r\n";
                    }
                   
                }
        }
    
    public static void logReturn()
        {       
            if(enabled) //Ha a logger engedélyezve van
                {   
                   //Megcsináljuk a behúzásokat, életvonalakat
                    for(int i = 0;i<indent;i++) 
                        history += "\t|";

                    //Loggoljuk a hívást
                    history += " <= ";
                    history += Thread.currentThread().getStackTrace()[2].getClassName() + " :: " + Thread.currentThread().getStackTrace()[2].getMethodName();
                    history += "\r\n";
                   
                    
                    
                 if(emptyLine)
                 {
                    //Hívás utáni üres sor életvonalakkal
                    for(int i = 0;i<indent;i++) 
                        history += "\t|";
                    
                    
                   history += "\r\n";
                 } 
                   
                    //Csökkentjük  eggyel a behúzás szintjét
                    indent--;
                }
        }
}